import sensors from '@fn/sa-sdk-miniprogram/dist/wechat/sensorsdata.cjs';
import Exposure from '@fn/sa-sdk-miniprogram/dist/wechat/plugin/exposure/index.cmd';
import { coverTrack } from '../lib/DataEvent';

setTimeout(() => {
    coverTrack(sensors);
    getApp().globalData.sensors = sensors;
}, 0);

const launch = {},
    { channel, source = 'SHT', referrer } = launch?.query || {};

const $mpClickElQueues = [];

const exposure = sensors.usePlugin(Exposure, {
    class_tags: ['sensors-exposure'],
    area_rate: 0,
    stay_duration: 0,
    repeated: true,
});
exposure.addObserverByClassName('sensors-swiper', {
    area_rate: 0.5,
    stay_duration: 0,
    repeated: true,
});

sensors.setPara({
    name: 'sensors',
    server_url: 'https://sensorsdata.dev.shantaijk.cn/sa?project=default',
    // 全埋点控制开关
    autoTrack: {
        appLaunch: true, // 默认为 true，false 则关闭 $MPLaunch 事件采集
        appShow: true, // 默认为 true，false 则关闭 $MPShow 事件采集
        appHide: true, // 默认为 true，false 则关闭 $MPHide 事件采集
        pageShow: true, // 默认为 true，false 则关闭 $MPViewScreen 事件采集
        pageShare: true, // 默认为 true，false 则关闭 $MPShare 事件采集
        mpClick: true, // 默认为 false，true 则开启 $MPClick 事件采集
        mpFavorite: true, // 默认为 true，false 则关闭 $MPAddFavorites 事件采集
    },
    show_log: true,
    allow_amend_share_path: true,
    preset_events: {
        collect_element: (el) => {
            // 由于神策小程序端没有custom_property事件，这里只能使用队列来完成el关联
            $mpClickElQueues.push(el);
        },
    },
});

// 注册$MPClick事件属性补全
sensors.registerPropertyPlugin({
    isMatchedWithFilter: (data) => data.event === '$MPClick',
    properties: function (data) {
        const el = $mpClickElQueues.shift();
        if (!data.properties['$element_name'] && data.properties['$element_content']) {
            // 这里主要用于补全小程序tab点击的事件的 $element_name属性
            data.properties['$element_name'] = data.properties['$element_content'];
        }
        data.properties['$element_target_url'] = el?.currentTarget?.dataset?.target || '';
    },
});


// 注册全局属性
sensors.registerApp({
    app_name: '太医管家',
    scenario: 'tygj_wx_mini_program', // 访问渠道
    v_aid: '20', // 太医管家appid
    channel, // 业务渠道
    source, // 渠道入口
});

sensors.init();
